# # 列表和元组
# # 列表
# # 1.直接使用字面值来创建
# #  [] 就表示一个 空的列表
# a = []
# print(type(a))
#
# # 2.使用 list() 来创建
# b = list()
# print(type(b))

# # 3.创建的时候进行初始化
# # 元素之间使用 , 来分割
# a = [1, 2, 3, 4]
# print(a)

# # 4.可以再同一个列表中存放不同的类型
# a = [1, 'hello', True]
# print(a)

# # 5.可以用下标来访问和修改，使用的运算符 []
# a = [1, 2, 3, 4, 5]
# print(a[2])
# a[2] = 100
# print(a)

# # 7.列表的访问不可越界，否则会报错, 那如何获取长度呢？
# a = [1, 2, 3, 4]
# print(len(a))

# # 8.python 中的下标，其实还可以写成负数！！
# # 例如写成 -1 ，其实等于 len(a) - 1
# a = [1, 2, 3, 4]
# print(a[-1], a[-2], a[-3])

# # 1.切片操作的使用
# a = [1, 2, 3, 4]
# print(a[1:3])  # 1 代表开始区间下标， 3代表区间结束下标   左闭右开
# print(a)

# # 2.使用切片的时候，省略边界
# a = [1, 2, 3, 4]
# # 省略后边界，意思是从开始位置，一直取到整个列表结束
# print(a[1:])
# # 省略前边界
# print(a[:2])
# # 此处切片中的下标还可以是负数
# print(a[:-1])
# # 还可以吧前后边界都省略！等价于列表自身
# print(a[:])

# # 3.带有步长的切片操作
# a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
# print(a[::1])
# print(a[::2])
# print(a[1::3])
# print(a[1:-1:2])

# # 4.带有步长的切片操作，步长为负数，从后往前取
# a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# print(a[::-1])
# print(a[::-2])
# print(a[-2:1:-3])

# # 5.当切片中的范围超出有效下标后，不会出现异常！而是尽可能的把符合要求的元素给获取到
# a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# print(a[1:100])

# # 使用for循环来遍历列表
# a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# for e in a:
#     print(e)

# # 使用for循环来遍历列表
# a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# for i in range(0, len(a)):
#     a[i] += 1
#     print(a[i])

# # 使用while循环来遍历
# a = [1, 2, 3, 4, 5]
# i = 0
# while i < len(a):
#     print(a[i])
#     i += 1

# # 1.使用 append 往列表里新增一个元素
# a = [1, 2, 3, 4]
# a.append(5)
# print(a)
# a.append('hello')
# print(a)

# # 2.还可以使用 insert 往任意位置插入
# a = [1, 2, 3, 4]
# a.insert(1, 'hello')
# a.insert(100, 'hello')
# print(a)

# # 1.使用 in 来判断某个元素是否再列表中存在
# a = [1, 2, 3, 4]
# print(1 in a)
# print(4 not in a)
# print(10 not in a)

# # 2.使用 index 方法，来判定，当前元素再列表中的位置，得到了一个下标
# a = [1, 2, 3, 4]
# print(a.index(2))
# print(a.index(3))

# # 1.使用pop删除末尾元素，你可以指定位置
# a = [1, 2, 3, 4]
# a.pop()
# print(a)
# a.append(4)
# a.pop(1)
# print(a)

# # 根据值来删除
# a = [1, 2, 3, 4, 5]
# a.remove(3)
# print(a)

# # 列表的连接
# a = [1, 2, 3, 4]
# b = [5, 6, 7, 8]
# c = a + b
# print(c)

# # 2.使用 extend  把后一个列表的内容拼接到前一个列表中
# a = [1, 2, 3, 4]
# b = [5, 6, 7, 8]
# a.extend(b)
# print(a)
# print(b)

# # 3.使用 += 拼接
# a = [1, 2, 3, 4]
# b = [5, 6, 7, 8]
# a += b
# print(a)

#---------------------------------------------------

# # 元组
# # 1.创建元组
# a = ()
# print(type(a))
# b = tuple()
# print(type(b))

# # 2.创建元组，初始化
# a = (1, 2, 3, 4)
# print(a)

# # 3.元组里可以是任意类型
# a = (1, 2, 'hello', True, [1, 2])
# print(a)

# # 4.使用下标来访问元组中的元素
# a = (1, 2, 3, 4)
# print(a[1])
# print(a[-1])

# # 5.通过切片来获取元组中的一部分
# a = (1, 2, 3, 4)
# print(a[1:3])

# # 6.也同样可以使用for遍历
# a = (1, 2, 3, 4)
# for e in a:
#     print(e)

# # 6.使用in判定元素存在，用index来返回元素下标
# a = (1, 2, 3, 4)
# print(3 in a)
# print(a.index(2))

# # 7.使用 + 拼接两个元组
# a = (1, 2, 3, 4)
# b = (5, 6, 7, 8)
# print(a + b)

# # 9.元组只支持读操作，不支持修改操作
# a = (1, 2, 3, 4)
# # a[0] = 100
# # a.append(5)

# # 10.当进行多元赋值时，其实本质上是按照元组的方式来进行工作的
# def getpoint():
#     x = 10
#     y = 20
#     return x, y
#
#
# x, y = getpoint()
# print(type(getpoint())) # 返回的是一个元组
